package com.qidianit.mes.pro.controller;

import com.github.pagehelper.PageInfo;
import com.qidianit.mes.pojo.Result;
import com.qidianit.mes.pojo.pro.ProcessStep;
import com.qidianit.mes.pro.service.ProcessStepService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 工序步骤管理控制器
 */
@RestController
@RequestMapping("/processStep") // 接口统一前缀，与工序步骤业务对应
public class ProcessStepController {

    @Autowired
    private ProcessStepService processStepService;

    /**
     * 批量删除工序步骤（逻辑删除）
     * 请求方式：DELETE
     * 请求路径：/processStep/batchDelete
     * 请求参数：ids（工序步骤ID数组，如？ids=1&ids=2）
     */
    @DeleteMapping("/batchDelete")
    public Result batchDelete(Long[] ids) {
        return processStepService.batchDelete(ids);
    }

    /**
     * 根据ID删除工序步骤（逻辑删除）
     * 请求方式：DELETE
     * 请求路径：/processStep/delete/{id}（路径参数传递ID）
     */
    @DeleteMapping("/delete/{id}")
    public Result deleteById(@PathVariable Long id) {
        return processStepService.deleteById(id);
    }

    /**
     * 更新工序步骤信息
     * 请求方式：PUT
     * 请求路径：/processStep/update
     * 请求体：JSON格式的工序步骤信息（含ID）
     */
    @PutMapping("/update")
    public Result update(@RequestBody ProcessStep processStep) {
        return processStepService.updateById(processStep);
    }

    /**
     * 新增工序步骤
     * 请求方式：POST
     * 请求路径：/processStep/add
     * 请求体：JSON格式的工序步骤信息（不含ID，自增）
     */
    @PostMapping("/add")
    public Result save(@RequestBody ProcessStep processStep) {
        return processStepService.saveStep(processStep);
    }

    /**
     * 根据ID查询工序步骤详情
     * 请求方式：GET
     * 请求路径：/processStep/{id}（路径参数传递ID）
     */
    @GetMapping("/get/{id}")
    public Result<ProcessStep> getById(@PathVariable Long id) {
        return processStepService.selectById(id);
    }

    /**
     * 根据工序ID查询所有步骤
     * 请求方式：GET
     * 请求路径：/processStep/process/{processId}（路径参数传递工序ID）
     */
    @GetMapping("/process/{processId}")
    public Result<List<ProcessStep>> getByProcessId(@PathVariable Long processId) {
        return processStepService.selectByProcessId(processId);
    }

    /**
     * 分页查询工序步骤列表（多条件筛选）
     * 请求方式：GET
     * 请求路径：/processStep/page
     * 请求参数：processStep（筛选条件）、pageNum（默认1）、pageSize（默认10）
     */
    @GetMapping("/page")
    public Result<PageInfo<ProcessStep>> list(
            ProcessStep processStep,
            @RequestParam(defaultValue = "1") int pageNum,
            @RequestParam(defaultValue = "10") int pageSize) {
        return processStepService.selectList(processStep, pageNum, pageSize);
    }
}
